package com.ftg.learn.back.qestion2;

/**
 * @author kangjx
 * @createTime 2022/8/30
 */
public class OutClass {

    int a = 9;

    static int b = 10;

    static final int c = 11;

    //成员方法
    public void abc(){

    }

    //成员内部类 - 实例内部类
    public class InnerClass{
        int innerA = 13;

    }

    //成员内部类 - 类内部类
    public static class Abc{

    }

    //成员内部类  私有 遵循开闭原则
    private class InnerClassTwo{

    }

    /**
     * 开闭原则编写的一个私有的内部类的外部方法
     * @return
     */
    public InnerClassTwo getInnerClass(){
        return new InnerClassTwo();
    }


    public static void main(String[] args) {
        //实例化外部类
        OutClass o = new OutClass();

        //实例化内部类 通过外部类的实例来创建内部类
        OutClass.InnerClass inner = o.new InnerClass();

        //表态成员内部类的使用
        OutClass.Abc a = new OutClass.Abc();
        Abc a1 = new OutClass.Abc();

        //调用私有
        InnerClassTwo icw = new OutClass().new InnerClassTwo();

        OutClass oc = new OutClass();
        InnerClassTwo ict2 = oc.getInnerClass();
    }

}
